/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package rete;

import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.DataOutputStream;
/**
*
* @author Administrator
*/
public class Server {
   static void server()
   {
    ServerSocket ss;
    Socket conn=null;
    PrintStream alClient;
    DataOutputStream streamO;
    FileInputStream FileI;

    try{
        ss = new ServerSocket(HTTP.porta);
        JOptionPane.showMessageDialog(null,"Server Creato con Successo!");
        JOptionPane.showMessageDialog(null,"Attendo Client!");
        conn = ss.accept();
    }catch(Exception e)
    {
     JOptionPane.showMessageDialog(null,"Impossibile creare Server!");
     System.exit(1);
    }
    String percorso = JOptionPane.showInputDialog("Dammi il percorso del file, con lo '\\' finale!");
    String nomeF = JOptionPane.showInputDialog("Dammi il nome del file!");
    try{
        alClient = new PrintStream(conn.getOutputStream());
        streamO = new DataOutputStream(conn.getOutputStream());
        FileI = new FileInputStream(percorso+nomeF);
        File dir = new File("C:\\inviati\\");
        if(!dir.exists())
            if(dir.mkdir())
                System.out.println("Cartella inviati creata!");
            else
                System.out.println("Cartella inviati non è stato possibile crearla!");
        File file = new File("c:\\inviati\\"+nomeF);
        FileOutputStream scriviFile = new FileOutputStream(file);
        byte buffer[] = new byte [HTTP.pacchetto];
        alClient.println(nomeF);
        int grandezzaF = FileI.available();
        alClient.println(grandezzaF);
        System.out.println("Invio in corso!");
/*        int leggi = FileI.read(buffer);
        for(int i = 0; i<grandezzaF/HTTP.pacchetto; i++)
        {
         streamO.write(leggi);
         scriviFile.write(leggi);
         leggi = FileI.read(buffer);
        }
         leggi = FileI.read(buffer, 0, (int)grandezzaF%HTTP.pacchetto);
         streamO.write(leggi);
         scriviFile.write(leggi);
*/
        System.out.println("grandezza FIle = "+grandezzaF+" / buffer = "+HTTP.pacchetto+" == "+grandezzaF/HTTP.pacchetto);
        int i;
        for(i=1;i<=grandezzaF/HTTP.pacchetto; i++)
        {
         FileI.read(buffer);
         scriviFile.write(buffer);
         streamO.write(buffer);
        }
         System.out.println(i);
        FileI.read(buffer, 0, (int)grandezzaF%HTTP.pacchetto);
        scriviFile.write(buffer, 0, (int)grandezzaF%HTTP.pacchetto);
        streamO.write(buffer, 0, (int)grandezzaF%HTTP.pacchetto);

        System.out.println("File inviato con successo!");
        streamO.close();
        FileI.close();
        conn.close();
    }catch(Exception e)
    {
     System.out.println("Errore impossibile invare file: Eccessione =="+e);
    }
   }
}
